package login;

import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.context.FacesContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpSession;

import usuario.EntidadeFuncionario;
import util.ServiceLocator;

public class Logins implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@PostConstruct
	public void iniciar() {
		System.out.println("O Bean login Foi Iniciado");
	}

	@PreDestroy
	public void encerrar() {
		System.out.println("O Bean login foi Encerrado");
	}
    
    private EntidadeFuncionario func = new EntidadeFuncionario();
 
    public EntidadeFuncionario getFunc() {
		return func;
	}

	public void setFunc(EntidadeFuncionario func) {
		this.func = func;
	}

	public Logins() {
        FacesContext contexto = FacesContext.getCurrentInstance();
        HttpSession sessao = (HttpSession) contexto.getExternalContext().getSession(false);
        func.setEmail((String)sessao.getAttribute("login"));
        func.setSenha((String)sessao.getAttribute("senha"));
    }
 
    public String logar() throws NamingException {
    	
    	Login login = (Login) ServiceLocator
		.getService("LoginBean/remote");
    	
    	login.setPassword(func.getSenha());
    	login.setUserName(func.getEmail());
    	login.validateLogin();
    	
    	if(login.isLoginOk() == true)
    	{
    		FacesContext contexto = FacesContext.getCurrentInstance();
    		HttpSession sessao = (HttpSession) contexto.getExternalContext().getSession(false);
    		sessao.setAttribute("login", func.getEmail());
    		sessao.setAttribute("senha", func.getSenha());
    		return "sucesso";
    	}
    	else
    	{
    		return "erro";
    	}
    }
 
    public String sair() {
        FacesContext contexto = FacesContext.getCurrentInstance();
        HttpSession sessao = (HttpSession) contexto.getExternalContext().getSession(false);
        sessao.invalidate();
        func.setEmail(null);
        func.setSenha(null);
        return "sair";
    }
 
    public String obterSessao() {
        return "sessao";
    }

}
